﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Acamps.Framework.BancoDados;
using Acamps.Framework.Util;
using Acamps.Web.NegocioWeb;

namespace Acamps.Web.Administrativo
{
    public partial class AcompanhamentoFichas : System.Web.UI.Page
    {
        AcessoWeb acessoWeb = new AcessoWeb();
        const string perfilGenerico = "#Perfil.EquipeGenerico";


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CarregarCombos();
                contexto();
            }

            if (Session["login"] != null)
            {
                var logado = (LoginUser) Session["login"];
                if (logado.Perfil.Referencia.ToUpper() == perfilGenerico.ToUpper())
                {
                    dvAlterarStatus.Visible = false;
                }
            }
            else
            {
                Response.Redirect("../Default.aspx");
            }

            if (Session["idAcampamento"] != null)
            {
                CarregarListaCampista();
            }
        }

        private void CarregarCombos()
        {
            Utilidades.SetaCombo(ddlStatusPagamento, acessoWeb.TipoParticipacaoNegocioWeb.Listar(true), "Descricao", "Id");
            Utilidades.SetaCombo(ddlEstadoCivil, acessoWeb.EstadoCivilNegocioWeb.ListarEstadoCivil(true), "Descricao", "Id");
            Utilidades.SetaCombo(ddlTipoSanguineo, acessoWeb.TipoSanguineoNegocioWeb.ListarTipoSanguineo(true), "Descricao", "Id");
            Utilidades.SetaCombo(ddlAcampamentos, acessoWeb.AcampamentoNegocioWeb.ListarAcampamentos(true), "Descricao", "Id");
            
        }

        private void contexto()
        {
            if (Request.QueryString["id"] != null)
            {
                hidFicha.Value = Request.QueryString["id"];
                CarregarCampista();
                CarregarListaCampista();
            }
        }

        private void CarregarCampista()
        {
            var ficha = acessoWeb.FichasNegocioWeb.RetornarFichaPorId(Guid.Parse(hidFicha.Value));

            ddlStatusPagamento.SelectedValue = ficha.IdTipoParticipacao.ToString();
            txtNome.Text = ficha.Campista.Nome;
            txtEndereco.Text = ficha.Campista.Endereco;
            txtFixo.Text = ficha.Campista.Fixo;
            txtCelular.Text = ficha.Campista.Celular;
            txtDataNascimento.Text = ficha.Campista.DataNascimento.Value.ToShortDateString();
            txtEmail.Text = ficha.Campista.Email;
            txtApelido.Text = ficha.Campista.Apelido;
            rbtSexoMasculino.Checked = ficha.Campista.Sexo == "M";
            rbtSexofeminino.Checked = ficha.Campista.Sexo != "M";
            txtCep.Text = ficha.Campista.Cep;
            txtCidade.Text = ficha.Campista.Cidade;
            txtBairro.Text = ficha.Campista.Bairro;
            txtRg.Text = ficha.Campista.Rg;
            ddlEstadoCivil.SelectedValue = ficha.Campista.IdEstadoCivil.ToString();
            ddlTipoSanguineo.SelectedValue = ficha.Campista.IdTipoSanguineo.ToString();
            txtCpf.Text = ficha.Campista.Cpf;

            txtParoquia.Text = ficha.Paroquia;
            txtBairroParoquia.Text = ficha.BairroParoquia;
            rbtnBatizadoSim.Checked = ficha.Batizado.Value;
            rbtnComunhaoSim.Checked = ficha.PrimeiraComunhao.Value;
            rbtnCrimaSim.Checked = ficha.Crisma.Value;
            pemaneceSim.Checked = ficha.Permanencia.Value;
            txtMovimento.Text = ficha.Movimento;
            txtRestricaoFisica.Text = ficha.RestricaoFisica;
            txtMedicamento.Text = ficha.Medicamento;
            txtParticipou.Text = ficha.Acampou;
            txtDieta.Text = ficha.Dieta;
            txtEncontrou.Text = ficha.ComoEncontrou;
            txtIndicacao.Text = ficha.Indicacao;
            txtConhece.Text = ficha.Conhece;
            txtAlergia.Text = ficha.Alergia;
        }

        protected void btnSalvar_OnClick(object sender, EventArgs e)
        {
            var ficha = acessoWeb.FichasNegocioWeb.RetornarFichaPorId(Guid.Parse(hidFicha.Value));
            var campista = acessoWeb.CampistaNegocioWeb.RecuperarCampista(ficha.IdCampista.Value);

            campista.Nome = txtNome.Text;
            campista.Endereco = txtEndereco.Text;
            campista.Fixo = txtFixo.Text;
            campista.Celular = txtCelular.Text;
            campista.DataNascimento = Convert.ToDateTime(txtDataNascimento.Text);
            campista.Email = txtEmail.Text;
            campista.Apelido = txtApelido.Text;
            campista.Sexo = rbtSexoMasculino.Checked ? "M" : "F";
            campista.Cep = txtCep.Text;
            campista.Cidade = txtCidade.Text;
            campista.Bairro = txtBairro.Text;
            campista.Rg = txtRg.Text;
            campista.IdEstadoCivil = Guid.Parse(ddlEstadoCivil.SelectedValue);
            campista.IdTipoSanguineo = Guid.Parse(ddlTipoSanguineo.SelectedValue);
            campista.Cpf = txtCpf.Text;

            ficha.IdTipoParticipacao = Guid.Parse(ddlStatusPagamento.SelectedValue);
            ficha.Paroquia = txtParoquia.Text;
            ficha.BairroParoquia = txtBairroParoquia.Text;
            ficha.Batizado = rbtnBatizadoSim.Checked;
            ficha.PrimeiraComunhao = rbtnComunhaoSim.Checked;
            ficha.Crisma = rbtnCrimaSim.Checked;
            ficha.Permanencia = pemaneceSim.Checked;
            ficha.Movimento = txtMovimento.Text;
            ficha.RestricaoFisica = txtRestricaoFisica.Text;
            ficha.Medicamento = txtMedicamento.Text;
            ficha.Acampou = txtParticipou.Text;
            ficha.Dieta = txtDieta.Text;
            ficha.ComoEncontrou = txtEncontrou.Text;
            ficha.Indicacao = txtIndicacao.Text;
            ficha.Conhece = txtConhece.Text;
            ficha.Alergia = txtAlergia.Text;

            var fichaRet = acessoWeb.FichasNegocioWeb.AlteracaoFicha(ficha);
            var campistaRet = acessoWeb.CampistaNegocioWeb.AlteracaoCampista(campista);
            Response.Redirect("AcompanhamentoFichas.aspx");
        }

        protected void ddlAcampamentos_OnSelectedIndexChanged(object sender, EventArgs e)
        {
            Session["idAcampamento"] = ddlAcampamentos.SelectedValue;
            CarregarListaCampista();
        }

        public void CarregarListaCampista()
        {
            if (Session["idAcampamento"] != null)
            {
                var campistas = acessoWeb.FichasNegocioWeb.ListarPorAcampamento(Guid.Parse(Session["idAcampamento"].ToString()));

                if (campistas.Count() > 0)
                {
                    rptDados.DataSource = campistas;
                    rptDados.DataBind();

                    lblHomensConfirmados.Text = campistas.Count(x =>
                                                                x.TipoParticipacao.Referencia == "#TipoParticipacao.Confirmado" &&
                                                                x.Campista.Sexo == "M").ToString();
                    lblMulheresConfirmados.Text = campistas.Count(x =>
                                                                x.TipoParticipacao.Referencia == "#TipoParticipacao.Confirmado" &&
                                                                x.Campista.Sexo == "F").ToString();

                    lblHomensDesistencia.Text = campistas.Count(x =>
                                                                x.TipoParticipacao.Referencia == "#TipoParticipacao.Cancelado" &&
                                                                x.Campista.Sexo == "M").ToString();

                    lblMulheresDesistencia.Text = campistas.Count(x =>
                                                                x.TipoParticipacao.Referencia == "#TipoParticipacao.Cancelado" &&
                                                                x.Campista.Sexo == "F").ToString();

                    lblHomensInscrito.Text = campistas.Count(x =>
                                                                x.TipoParticipacao.Referencia == "#TipoParticipacao.Inscrito" &&
                                                                x.Campista.Sexo == "M").ToString();

                    lblMulheresInscrito.Text = campistas.Count(x =>
                                                                x.TipoParticipacao.Referencia == "#TipoParticipacao.Inscrito" &&
                                                                x.Campista.Sexo == "F").ToString();

                    lblTotalFichas.Text = "Quantidade total das fichas " + campistas.Count().ToString();
                }
            }
        }

    }
}